//
//  WTEmoticonKeyboard.swift
//  WTSinaWeibo
//
//  Created by  Wellim on 16/7/4.
//  Copyright © 2016年  Wellim. All rights reserved.
//

import UIKit

class WTEmoticonKeyboard: UIView {

  override  init(frame: CGRect) {
        super.init(frame: frame)
        setUpUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
        
    }
    
    // MARK: - 设置视图
    private func setUpUI(){
     //背景图片
      backgroundColor = UIColor(patternImage: UIImage(named: "emoticon_keyboard_background")!)
        // 01- 添加控件
      addSubview(toolbar)
      addSubview(pageView)
      addSubview(pageControl)
        // 02- 添加约束
      toolbar.snp_makeConstraints { (make) in
       
        make.left.right.bottom.equalTo(self)
        make.height.equalTo(37)
        
      }
        
      pageView.snp_makeConstraints { (make) in
        
        make.left.right.top.equalTo(self)
        make.bottom.equalTo(toolbar.snp_top)
        
      }
       
      pageControl.snp_makeConstraints { (make) in
        
         make.centerX.equalTo(self)
         make.bottom.equalTo(pageView)
        
        }
        
        
        // 接收toolbar中的哪个按钮点击
        toolbar.toolBarClosure = {[weak self] (type:WTEmoticonToolbarType) -> () in
        
//            switch type {
//            case .Default:
//                print("默认表情")
//            case .Emoji:
//                print("Emoji")
//            case .Lxh:
//                print("浪小花")
//            }
            // 获取indexPath
            let indexPath = NSIndexPath(forItem: 0, inSection: type.rawValue)
            // 叫配图滚动指定位置
            self?.pageView.scrollToItemAtIndexPath(indexPath, atScrollPosition: UICollectionViewScrollPosition.Left, animated: false)
            
            // 总页数
            self?.pageControl.numberOfPages = WTEmoticonTools.sharedEmoticonTools.allEmoticons[indexPath.section].count
             // 当前页数
            self?.pageControl.currentPage = 0
        
        }
        
    
   }
    
    // MARK: - 懒加载控件
    // 如果使用UIStackView 初始化 需要传入frame 如果我们使用约束frame 可以传入CGRectZero
    // frame 可以传入CGRectZero
    private lazy var toolbar: WTEmoticonToolbar = WTEmoticonToolbar(frame: CGRectZero)
    
    // 表情键盘
    private lazy var pageView:WTEmoticonPageView = {
    
     let view = WTEmoticonPageView()
        
        //设置代理
        view.delegate = self
        
       // 取消弹簧效果
        view.bounces = false
        // 分页
        view.pagingEnabled = true
        // 隐藏滚动条
        view.showsVerticalScrollIndicator = false
        view.showsHorizontalScrollIndicator = false
        
        return view
    }()
    
     // pagecontrol
    private lazy var pageControl: UIPageControl = {
      
        let view = UIPageControl()
        // 总页数
        view.numberOfPages = WTEmoticonTools.sharedEmoticonTools.allEmoticons[0].count
        // 当前页数
        view.currentPage = 0
    
        //        // 默认的
        //        view.pageIndicatorTintColor = UIColor(patternImage: UIImage(named: "compose_keyboard_dot_normal")!)
        //        // 选中颜色
        //        view.currentPageIndicatorTintColor = UIColor(patternImage: UIImage(named: "compose_keyboard_dot_selected")!)
        // 通过kvc赋值

        view.setValue(UIImage(named:"compose_keyboard_dot_normal"), forKey: "pageImage")
        
        view.setValue(UIImage(named:"compose_keyboard_dot_selected"), forKey: "currentPageImage")
       
        return view
    }()
    
    
    
    
}

extension WTEmoticonKeyboard: UICollectionViewDelegate{
    /*
     - 计算方式 （只试用于我么cell和pageView 一样大）
     - 当前的pageView 界面上展示给用户最多两个cell
     - 相对于 pageView 左侧起点为O点 屏幕中心点x = 屏幕的宽度/ 2 + contentOffset.x
     - 由于cell贴在pageView 每个cell都有自己的frame
     - 如果我判断出 哪个cell的frame 包含我们屏幕的中心点 就代表他显示的多
     - 通过cell 和 pageView 得到indexPath
     - indexPath 的到section
     - section 0 1 2  viewWithTag  通过该方法 得到button  吧button状态发生改变
     */

    func scrollViewDidScroll(scrollView: UIScrollView) {
        
//        print(scrollView.contentOffset.x)
        // 获取相对于屏幕的中心点X
        let centerX = kScreenWidth/2 + scrollView.contentOffset.x
        
        // 获取当前屏幕显示的cell 按照我们的意愿重新排序
        let cellArray = pageView.visibleCells().sort { (cell1, cell2) -> Bool in
            
            return cell1.frame.origin.x < cell2.frame.origin.x
        }
        // 如果屏幕显示的是两个cell时候我们才判断
        if cellArray.count == 2 {
            //第一个
            let firstCell = cellArray.first!
            //第二个
            let lastCell = cellArray.last!
            
            // 获取显示多的cell的indexPath
            var indexPath: NSIndexPath
            
            // 判断我们的中心点是否在第一个cell中 代表第一个cell显示的多
            if firstCell.frame.contains(CGPoint(x: centerX, y: 0)) {
            
            indexPath = pageView.indexPathForCell(firstCell)!
            
            } else{
            
            indexPath = pageView.indexPathForCell(lastCell)!
            
            }
            
            print(indexPath.section)
            
           // 滚动pageView 改变toolbar下面按钮的选中的状态
            toolbar.setCurrentButtonss(indexPath.section)
        }
        
    }
    




}
